# -*- coding: utf-8 -*-
from __future__ import unicode_literals
#导入OS模块
import os

#获取用户输入,输入要备份的文件名（带后缀）
def getUserInput():
    return input("请输入您要备份的文件名（带后缀）：")

#用与提取文件后缀名，输入文件名加后缀，返回文件后缀名，即文件格式
def getFileSuffix(fileName):
    return fileName[(fileName.rfind(".")):]
#生成备份后的文件名，输入文件名加后缀，返回新的文件名
def getNewFileName(fileName):
    oldFileName = getFileSuffix(fileName)
    fileName = fileName[:(len(fileName)-len(oldFileName))]
    return fileName+".back"+oldFileName
#核心功能，备份文件,输入要备份的文件名，无返回值
def backupFile(fileName):
    #打开需要备份的文件
    f_read = open(fileName,"r")
    #创建一个备份文件，用于储存备份数据(如果当前)
    f_write = open(getNewFileName(fileName),"w")
    #备份数据
    fileDate = f_read.read()
    f_write.write(fileDate)
    #关闭文件
    f_read.close()
    f_write.close() 
    print("您已成功备份%s文件，生成备份文件为当前路径下的%s文件"%(fileName,getNewFileName(fileName)))

#主函数
def main():

    while True:
        #输入要备份的文件名（带后缀）
        oldFileName = getUserInput()
        #判断输入的文件在当前路径下是否存在
        if os.path.exists(oldFileName):
            break
        else:
            print("您输入文件在当前路径下不存在,请重新输入！")
    #判断当前路径下是否已经存在备份文件
    if os.path.exists(getNewFileName(oldFileName)):
        while True:
            userInput = input("该文件已经在当前路径下存在备份文件是否覆盖（y/n）")
            if (userInput == "y") or (userInput == "Y"):
                backupFile(oldFileName)
                break
            elif (userInput == "n") or (userInput == "N"):
                print("文件备份操作已取消，退出系统！")
                exit()
            else:
                print("您的操作有误，请重新选择！")
    else:
        backupFile(oldFileName)

main()